package org.cnam.mobileShopping.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

/**
 * Classe utilitaire d'opérations récurentes dans l'application
 * 
 * @author laurent
 * 
 */
public class MobileShoppingUtils {

	public static final String PREFS_NAME = "MobileShopping";

	/**
	 * Ajout de préférences pour l'application
	 * 
	 * @param context Le context de l'application avec lequel on accède aux
	 *            sharedPreferences
	 * @param key La clé de la valeur à stocker
	 * @param value La valeur à stocker
	 */
	public static void addSharedPref(Context context, String key, String value) {
		SharedPreferences sp = context.getSharedPreferences(PREFS_NAME,
				Context.MODE_WORLD_WRITEABLE);
		Editor e = sp.edit();
		e.putString(key, value);
		e.commit();
	}

	/**
	 * Récupération d'une préférences de l'application
	 * 
	 * @param context Le context de l'application qui demande la valeur
	 * @param key La clé de la valeur que l'on recherche
	 * @return La value correspondante, sinon null
	 */
	public static String getSharedPreferences(Context context, String key) {
		return getSharedPreferences(context, key, null);
	}

	/**
	 * Récupération d'une préférences de l'application avec une donnée par
	 * défaut
	 * 
	 * @param context Le context de l'application qui demande la valeur
	 * @param key La clé de la valeur que l'on recherche
	 * @param value La valeur par défaut au cas où la clé ne soit pas trouvée
	 * @return La value correspondante, sinon null
	 */
	public static String getSharedPreferences(Context context, String key,
			String value) {
		SharedPreferences sp = context.getSharedPreferences(PREFS_NAME,
				Context.MODE_WORLD_WRITEABLE);
		return sp.getString(key, value);
	}

	/**
	 * Somme nous connecté au réseau GPRS ou WIFI?
	 * 
	 * @param context Context permettant de récupérer les manager
	 * @return True ==> On est cnnecté
	 */
	public static Boolean isConnected(Context context) {
		ConnectivityManager connect = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo netInfo = connect.getActiveNetworkInfo();

		return netInfo != null && netInfo.isConnectedOrConnecting();
	}
}
